
package com.trial.area.permission.service;

import java.util.List;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.trial.area.permission.dao.UserRoleDao;
import com.trial.area.permission.entity.AdminUserVO;
import com.trial.area.permission.entity.RoleVO;
import com.trial.area.permission.entity.UserRoleVO;
import com.trial.area.permission.param.UserRoleParam;

/**
 * 用户角色关系Service实现类
 *
 * @author 朱国军
 * @version 2016年03月23日 朱国军
 */
@Service
public class UserRoleService {

    @Autowired
    private UserRoleDao userRoleDao;

    /**
     * 按查询条件查询用户的权限列表
     *
     * @param userRoleParam 查询条件
     * @return 用户的权限列表
     */
    public List<RoleVO> queryUserRoleList(UserRoleParam userRoleParam) {
        return userRoleDao.queryUserRoleList(userRoleParam);
    }

    /**
     * 按查询条件查询权限分配的用户列表
     *
     * @param userRoleParam 查询条件
     * @return 权限分配的用户列表
     */
    public List<AdminUserVO> queryRoleUserList(UserRoleParam userRoleParam) {
        return userRoleDao.queryRoleUserList(userRoleParam);
    }

    /**
     * 修改用户对应的角色
     *
     * @param userId 用户ID
     * @param roleList 角色列表字符串（“,”分隔）
     * @return
     */
    @Transactional
    public Integer insertUserRole(String adminUserId, String roleId) {

        UserRoleVO userRoleVO = new UserRoleVO();
        userRoleVO.setUserRoleId(UUID.randomUUID().toString());
        userRoleVO.setRoleId(roleId);
        userRoleVO.setAdminUserId(adminUserId);
        return userRoleDao.insert(userRoleVO);
    }

    /**
     * 修改角色对应的用户
     *
     * @param roleId 角色ID
     * @param userList 角色对应的用户列表字符串（“,”分隔）
     * @return
     */
    @Transactional
    public String insertRoleUser(String roleId, String adminUserId) {
        if (StringUtils.isBlank(roleId)) {
            return "角色不能为空！";
        }
        
        if (StringUtils.isNotBlank(adminUserId)) {
            UserRoleVO userRoleVO = new UserRoleVO();
            userRoleVO.setUserRoleId(UUID.randomUUID().toString());
            userRoleVO.setRoleId(roleId);
            userRoleVO.setAdminUserId(adminUserId);
            userRoleDao.insert(userRoleVO);
        }

        return null;
    }

    /**
     * 根据用户角色关系ID删除权限角色关系表
     *
     * @param userRoleId 用户角色关系ID
     * @return 影响的数据数量
     */
    public Integer deleteById(String userId, String roleId) {
        return userRoleDao.deleteUserRole(userId, roleId, null);
    }
}
